package com.lemon.redis.service;

import java.util.concurrent.TimeUnit;

/**
 * @author 李猛
 * @datetime 2024/2/7 0:38
 * @description 接口对象
 */
public interface RedisService {
    /**
     * 有时效的保存
     *
     * @param key
     * @param value
     * @param time  单位是分钟
     * @return
     */
    boolean save(String key, Object value, long time, TimeUnit unit);

    /**
     * 有时效的保存
     *
     * @param key
     * @param value
     * @param time  单位是分钟
     * @return
     */
    boolean save(String key, Object value, String time, TimeUnit unit);

    /**
     * 永久保存
     *
     * @param key
     * @param value
     * @return
     */
    boolean save(String key, Object value);

    /**
     * 根据 key 删除数据
     *
     * @param key
     * @return
     */
    boolean delByKey(String key);


    /**
     * 根据key获取数据
     *
     * @param key
     * @param tClass
     * @return
     */
    <T> T getByKey(String key, Class<T> tClass);

    /**
     * 判断key是否存在
     *
     * @param key
     * @return
     */
    boolean hasKey(String key);

    /**
     * 根据key设置过期时间
     *
     * @param key
     * @param time 单位分钟
     * @return
     */
    boolean expireByKey(String key, long time, TimeUnit unit);
}
